package com.sth.prototype;

/**
 * 原型设计模式:有助于创建更好的性能的重复对象
 * <p>
 * 在原型模式中,将返回一个现有对象的克隆,而不是创建新的对象
 * <p>
 * 我们使用原型设计模式,如果创建一个新的对象的成本是昂贵的资源密集型
 */
public class AppMain {
    public static void main(String[] args) {
        // 创建一个ShapeProtoType 类,来返回形状的原型
        ShapeProtoType.loadCache();

        Shape cloneShape = (Circle) ShapeProtoType.getShape("1");
        cloneShape.draw();
        System.out.println("shape : " + cloneShape.getType());

        Shape cloneShape2 = (Shape) ShapeProtoType.getShape("2");
        System.out.println("shape : " + cloneShape2.getType());

        Shape cloneShape3 = (Shape) ShapeProtoType.getShape("3");
        System.out.println("shape : " + cloneShape3.getType());
    }
}
